package com.yujiahao.bigdata.rdd.insterance

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
    /**
     TODO RDD数据模型的分区
       1、makeRDD:第一个参数表示数据及（数据来源）；第二个参数表示数据切片（分区）的数量，参数存在默认值
      2、分区的规则：
        1）如果makeRDD方法的第二个参数设定值，分区数量就设定完成、
        2）如果第二个参数没有设定，会从配置对象中回去参数
        3）如果配置对象中没有配置相关参数，那么会采用当前环境的最大虚拟核数。
         >>local[N]：表示本地环境，最大虚拟核数为N
         >>local[*]：表示本地环境，系统最大虚拟核数
      3、RDD数据模型的分区:数据放置在那个分区（原则：均衡--就是平均分）
      4、如果数据无法均分，那么数据会从后向前补充

     */
object Spark01_RDD_Instance_Partition {
  def main(args: Array[String]): Unit = {
    //TODO 1、构建环境--获得连接
    val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local[*]")
    val sc: SparkContext = new SparkContext(conf)

    //TODO RDD数据模型的分区

    val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 2)
    //将数据保存到分区文件中--就是说将数据保存到output分区中
    rdd.saveAsTextFile("output")
    //TODO 5、释放资源--关闭连接
    sc.stop()

  }

}
